package com.vcit.system.util;

import com.vcit.system.mapper.student.TStudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 学生学号生成工具类
 */
@Component
public class StudentNumberGenerator {

    @Autowired
    private TStudentMapper studentMapper;

    /**
     * 生成学生学号
     * 格式：入学年份(4位) + 专业代码(3位) + 学生类型(1位) + 序号(3位)
     * 学生类型：0=高考, 1=单独招生, 2=预科,3=对口升学
     *
     * @param zsYear 招生年份
     * @param majorCode 专业代码
     * @param studentType 学生类型
     * @return 生成的学号
     */
    public String generateStudentNumber(String zsYear, String majorCode, Integer studentType) {
        // 获取当前年份下该专业该类型学生的最大序号
        String prefix = zsYear + majorCode + studentType;
        String maxSno = studentMapper.selectMaxSnoByPrefix(prefix);
        
        int sequence = 1;
        if (maxSno != null && maxSno.startsWith(prefix)) {
            // 提取序号部分并加1
            String seqStr = maxSno.substring(prefix.length());
            sequence = Integer.parseInt(seqStr) + 1;
        }
        
        // 格式化序号为3位数字
        String formattedSequence = String.format("%03d", sequence);
        
        // 组合完整的学号
        return prefix + formattedSequence;
    }
} 